package models

import (
	"strconv"

	"github.com/astaxie/beego/orm"
)

const (
	ReviewOK  = 1 // ok
	ReviewNOK = 2 // nok
)

type Task struct {
	Id        int64 `orm:"column(id)"`
	ProjectId int64 `orm:"column(project_id)"` // 所属项目ID
	Status    uint8 // 任务状态: 0-保留, 10-未开始, 20-进行中, 30-审核中, 40-确认中, 99-完成

	Question string // 任务原始问题
	Created  int64  // 任务创建时间
	Started  int64  // 任务开始时间
	Updated  int64  // 任务更新时间

	Answer        string // 任务结果数据
	AnswerStarted int64  // 开始时间
	AnswerUpdated int64  // 更新时间
	AnswerUserId  int64  `orm:"column(answer_user_id)"` // answer user

	// ReviewTimes   uint8
	Review        uint8 // review 结果：0-保留, 1-ok, 2-nok
	ReviewStarted int64 // 开始时间
	ReviewUpdated int64 // 更新时间
	ReviewUserId  int64 `orm:"column(review_user_id)"` // review user
}

func (t *Task) TableName() string {
	return "fh_task"
}

func (t *Task) String() string {
	return strconv.FormatInt(t.Id, 10)
}

func (t *Task) Insert() error {
	if _, err := orm.NewOrm().Insert(t); err != nil {
		return err
	}
	return nil
}

func (t *Task) Read(fields ...string) error {
	err := orm.NewOrm().Read(t, fields...)
	if err != nil {
		return err
	}
	return nil
}

func (t *Task) Update(fields ...string) error {
	_, err := orm.NewOrm().Update(t, fields...)
	if err != nil {
		return err
	}
	return nil
}

func (t *Task) Delete() error {
	_, err := orm.NewOrm().Delete(t)
	if err != nil {
		return err
	}
	return nil
}

func init() {
	orm.RegisterModel(new(Task))
}
